When storing non-volatile data on media such as an EEPROM (memory hardware) or in certain classes of block-oriented EEPROM file systems, there is no fixed assignment of data to memory areas on the medium. The data are always stored at different positions. It is therefore necessary to search for empty blocks before writing data. When searching for free blocks, no defective blocks should be selected; furthermore, a maximum possible number of free blocks should always be available.
Due to defects in such memory hardware or due to unfinished write operations, power failures, or resets, blocks may appear defective from the software's point of view. In general, it is impossible to tell by reading the data and the management information whether a block is actually defective or only appears defective.
A reason for an erroneous memory content is therefore impossible to recognize with absolute certainty. However, when a memory fault is detected, often either the corresponding block is marked as defective and is not used again or the fault is ignored and the block continues to be normally used. Both of these procedures result in problems regarding data availability.
If blocks that appear defective are marked defective and are not used again, they are reliably not used any further, but blocks appearing defective, for example, due to unfinished write operations, are also not used again. As a result, possibly more and more blocks marked defective, but which are actually intact, may be present in the system. Consequently, the other blocks are more intensively used for write accesses, or an insufficient number of blocks is available, so that the system is no longer able to store data. One result is that the system is recognized as defective, although it is not.
If a fault is ignored and the block continues to be normally used, there is no danger of intact blocks being recognized as defective and not being used again. There is, however, the risk that blocks having permanent hardware faults are used again and again and thus data continue to be lost.